package Day5Zuoye;

import Shop.Test;

import java.io.*;
import java.net.URL;
import java.net.URLDecoder;
import java.util.Properties;

public class Baidu {
    public static void main(String[] args)  {
//        1、Java中有个比较重要的的类Properties(java.util.Properties)，是代表一个持久的一套详细属性，属性可以被保存到一个流或从流中加载的类。以下是关于属性的要点：
//
//        属性列表中每个键及其对应值是一个字符串。
//
//        一个属性列表可包含另一个属性列表作为它的“默认”，第二个属性可在列表中搜索，如果没有在原有的属性列表中找到的属性键。
//
//        这个类是线程安全的;多个线程可以共享一个Properties对象，而不需要外部同步
//        主要用于读取Java配置文件，存放一些经常用到的数据，方便程序员修改。该配置文件是个文本文件，后缀名为(.properties)，
//        关于路径问题的补充
//
//        1、上述获得Properties配置文件中英文是通过Test.class.getClassLoader().getResourceAsStream()方法直接获得字节输入流，所以不用考虑路径中是否包含中文的问题，如果是通过Test.class.getClassLoader().getResource()方法，因为该方法返回值是URL，如果项目的目录中有中文命名，则获得的URL会出现乱码，所以使用
//
//        String path=URLDecoder.decode(url.getFile(), "utf-8");


        try {
            Properties prop = new Properties();
            Properties prop2 = new Properties();
//             String path =Test.class.getClassLoader().getResource("example/china/test2.properties").getPath();
            //获得URL路径
            URL url= Test.class.getClassLoader().getResource("example/china/test2.properties");
            //打印路径
            System.out.println("url.getFile()="+url.getFile());
            //将路径中的中文转码
            String path= URLDecoder.decode(url.getFile(), "utf-8");
            System.out.println("path="+path);
            //通过路径获得字节输入流
            InputStream input=new FileInputStream(path);
            //直接获得字节输入流
            InputStream in = Test.class.getClassLoader().getResourceAsStream("example/china/test2.properties");

            prop.load(in);
            prop2.load(input);
            System.out.println("prop="+prop);
            System.out.println("prop2="+prop2);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }









}
